Skip to content

Spring Boot 源码里的 6 个设计模式
(1)工厂模式
SpringApplication#createApplicationContext() 根据 web 类型返回
• AnnotationConfigServletWebServerApplicationContext
• AnnotationConfigReactiveWebServerApplicationContext

(2)模板方法
SpringApplicationRunListener:把启动过程拆成
starting → environmentPrepared → contextPrepared → contextLoaded → started → running → failed
子类只需覆写某个阶段。

(3)观察者模式
ApplicationEventMulticaster 广播事件,如 ApplicationReadyEvent。

(4)策略模式
EnvironmentPostProcessor 不同实现加载不同配置源:
• ConfigDataEnvironmentPostProcessor → application.yml
• SystemEnvironmentPropertySourceEnvironmentPostProcessor → 系统变量

(5)装饰器模式
BeanDefinitionDecorator 在 XML 中给 <bean> 再包一层 <aop:scoped-proxy>

(6)SPI(Service Provider Interface)
META-INF/spring.factories 让第三方 jar 声明自动配置,不修改主项目源码。